# -*- coding:utf-8 -*-
# @Email   : lishuaichao@lingxi.ai
# @Time    : 2023/10/31 17:06

from bot.insurance_consultant.agent.llm_agent import LLMAgent

default_template = """
作为一个专业的保险销售员，你的任务是根据用户的情境以及保险销售员和用户的对话，判断用户是否符合投保条件，如果当前信息无法判断，需要补充哪些信息。
不符合投保条件的情况包括：
1.用户的职业是否符合投保条件,高危职业不能投保
2.用户两年内住过院不能投保
3.用户主动表示有重大疾病不能投保


因以下原因住院作为例外事项，仍可投保本产品：
- 分娩；
- 急性呼吸系统疾病；
- 急性肠胃炎、急性阑尾炎；
- 胆结石经治疗后一年以上未复发；
- 胆囊息肉已手术切除且病理结果为良性；

其中,重大疾病包含:
- 恶性肿瘤（包括原位癌）、白血病、精神疾病、失聪、语言功能丧失、肢体缺损
- 脑血管疾病、心肌病、心力衰竭、冠心病、心绞痛、心肌梗塞、肺源性心脏病、二尖瓣狭窄、高血压、心律失常、心动过速、心动过缓；肺纤维化、支气管扩张、慢性支气管炎、肺气肿、哮喘、咯血
- 糖尿病、系统性红斑狼疮、脑垂体疾病；重症肌无力、紫癜症、甲状腺疾病、类风湿性疾病
- 尿毒症、肾病、血尿、肾炎；肝炎、肝硬化、慢性萎缩性胃炎、肠息肉、胰腺疾病、便血
- 癫痫、脊髓病变、帕金森病、慢性酒精中毒
- 针对乳房、子宫、卵巢、宫颈疾病进行定期复查或治疗

要求:
1.满足任意一条不符合投保条件的规则,则输出不符合投保条件的话术,例如:
 - 很遗憾了，您虽不能参加进来，但您可以把名额给到他，因为整个家庭都是您和爱人支撑，中间有一人发生风险，不仅是一个人的问题，是整个家庭都会面临同样的困境，那爱人的保障做好了，中间也不用担心爱人发生疾病影响到家庭了，保障好了才会创造更多的财富让孩子和家人生活的越来越幸福，您说是吧
2.如果用户符合投保条件,则输出符合投保条件即可。
3.当无法判断时,如果当前的销售流程节点是"收集用户情境",并且收集到了用户住过院,则需要再次确认用户的住院时间是否是两年内
 - 需要再给您确认一下住院的具体时间,是两年前还是两年内？
 - 如果是两年前,则输出符合投保条件
 - 如果是两年内,则再次询问住院原因并判断是否属于例外事项,不属于例外事项则输出不符合投保条件的话术
4.(当流程是"收集用户情境"时,忽略4)如果当前的销售流程节点是"确认费用"、"协助投保",判断当前用户情境或对话记录是否有提到用户职业(不属于高危)和用户身体是健康的(两年内没住过院),如果没有提到,则输出收集这两项信息的话术:
 - 因为咱们这个理赔概率比较高，所以不是所有的客户都能参加，需要对职业、健康有一定要求，您目前是做什么工作的啊？
 - (如果用户没有回答任何职业,则直接问用户是否是高危职业)不属于高危职业,对吧?
 - 目前身体是不是健康的，最近两年内有没有住过院啊？

当前的销售流程节点是:{sop}

用户当前的情境:
```
{user_base_info}
{user_info}
```

对话记录如下：
```
{conversation_history}
```
话术可以根据用户的情境进行调整，但是要保证话术的专业性和简洁性，尽量口语化，不要重复回答相同内容，一次回复只有一个核心目的。
保险销售员:
"""


class Underwriting(LLMAgent):

    def __init__(self, role, user_base_info, user_info, conversation_history, sop):
        conversation_history = conversation_history.replace("保险规划师", "保险销售员")
        self.prompt = default_template.format(role=role,
                                              user_base_info=user_base_info,
                                              user_info=user_info,
                                              conversation_history=conversation_history,
                                              sop=sop)
        super().__init__(self.prompt)

if __name__ == '__main__':
    user_info_extract = Underwriting(role='保险规划师',
                                        conversation_history='')
    result = user_info_extract.chat_with_azure()
    print(result)


"""
高危职业表:
|分类|职业|
|---|---|
|农牧渔业|猛兽饲养工(动物园)、有毒动物饲养工(蛇、蝎子、蜈蚣等)、捕鱼人(内陆)、捕鱼人(沿海)养殖工人(沿海)、远洋渔船船员、近海渔船船员|
|木材森林业|伐木工人、锯木工人、运材车辆之司机及押运人员、起重机之操作人员、装运工人、挂钩工人、锯木工人、木材搬运工人、森林防火人员、拖拉机驾驶员、联合收割机驾驶员、农用运输车驾驶员、农用机械操作及修理人员、沼气工程施工人员|
|矿业采掘业|矿工、采掘工、爆破工、工人、海上所有作业人员、潜水人员、采石业工人、采砂业工人、陆上油矿开采技术员、油气井清洁保养修护工、钻勘设备安装换修保养工、钻油井工人|
|交通运输业|"陆运:铁牛车驾驶、混凝土预拌车驾驶员、机动三轮车夫、货车司机、随车工人、搬运工人、装卸工人、矿石车司机、矿石车随车工人、工程卡车司机、工程卡车随车人员|
|液化、氧化油罐车司机、随车工人、铁路货运、铁路搬运工人|
|客货轮(沿海):船长、水手长、水手、铜匠、木匠、泵匠、电机师、厨师、服务生、实习生、游览船/小气艇之驾驶及工作人员、救难船员|
|客货轮(内河):船长、水手长、水手、铜匠、木匠、泵匠、电机师、厨师、服务生、实习生|
|客货轮(远洋)：所有随船人员|
|空运:民航机飞行人员、机上服务员、直升机飞行人员"|
|建筑工程|"建筑公司:钢骨结构工人、鹰架架设工人、铁工、焊工、建筑工程机械操作员、金属门窗装修工人、拆屋、迁屋工人、凿岩工、装饰装修工(室外)(基础装修至毛坯)|
|铁路公路铺设:现场勘测人员(山区)、工程机械操作员、工程车辆驾驶员、铺设工人(山地)、维护工人、电线架设及维护工人、高速公路工程人员(含美化人员)|
|筑路、养护工、铁路舟桥工、道岔制修工|
|造修船业:工人、拆船工人|
|电梯、升降机:安装工人、电梯、升降机修理及维护工人|
|装璜:室内装璜人员(不含木工、油漆工)、室外装璜人员、金属门窗制造、装修工人|
|其他：安装玻璃幕墙工人、钢结构安装工、中央空调系统安装及维护人员、地质探测员(山区)、地质探测员(海上)、海湾港口工程人员、水坝工程人员、挖井工程人员、桥梁工程人员、隧道工程人员、潜水工作人员、爆破工作人员、挖泥船工人|
|测绘工程:海洋测绘工程技术人员(海上作业)"|
|制造加工维修业|"冶金业:高炉原料工、高炉炉前工、高炉运转工、炼钢原料工、炼钢工、炼钢浇铸工练钢准备工、铁合金电炉冶炼工、火法冶炼工、烟气制酸工、酸洗工、金属材热处理工、焊管工、金属挤压工、铸轧工、铸管工、硬质合金成型工|
|机械制造维修业:车床工、车床工(全自动)、车工、铣工、磨工、镗工、钻床工、组合机床工、加工中心操作工、拉床、锯床工、弹性元件制造工、铸造、锻造工、冲压工、剪切工、焊工、金属热处理工、粉末冶金处理工、涂装工、电切削工、锅炉设备装配工、有关高压电之工作人员、铁心叠装工|
|电机业:有关高压电之工作人员|
|水泥业(包括水泥、石膏、石灰、陶器):水泥生产制造工、采掘工、爆破工、石灰焙烧工、加气混凝土制品工、装饰石材生产工、石棉制品工、金刚石制品工|
|化工业:液化气体制造工、防腐蚀工、油制气工、炼焦工,焦炉机车司机、煤制气工、煤气储运工、硫酸铵生产工、过磷酸铵生产工、硫酸生产工、硝酸生产工、盐酸生产工、磷酸生产工、纯碱生产工、烧碱生产工、氟化盐生产工、缩聚磷酸盐生产工、高频等离子工、气体深冷分离工、制氧工、工业气体液化工、二氧化硫制造工、脂肪烃生产工、橡胶生产工、化纤聚合工、其他有毒物品生产工、火药炸药业人员、烟花爆竹业人员其他：铁路车辆制造装修工、制浆备料工、制浆设备操作工、制浆废液回收利用工、木制家具制造工人、木制家具修理工人、金属家具制造工人、金属家具修理工人、家用空调、太阳能热水器安装与维修工、焊接工、冲床工、剪床工、铣床工、铸造工、车床工(全自动)、车床工(其他)、玻璃加工工"|
|出版广告业|战地记者、广告招牌架设人员、霓虹光管安装及维修人员|
|娱乐业|武打演员、特技演员、广播电视天线工、救生员、动物园驯兽师、高空杂技、飞车、飞人演员|
|文教机构|飞行训练教官及学员、特殊运动班学生(拳击、摔跤、跆拳道等)、武术学校学生|
|公共事业|通信系统供电设备、空调设备安装维护人员、电台天线维护人员、光缆铺设人员、高压线路带电检修工、变压器检修工、变电设备检修工、变电设备安装工、牵引电力线路安装维护工、维修电工、电力设施架设人员、电力高压电工程设施人员、水泵或提水站的维修人员、河道清淤的工人|
|服务业|液化燃气零售店负责人及工作人员、高楼外部清洁工、烟囱清洁工|
|公检法等执法检查机关|刑警、警务特警、防暴警察、武警、防毒防化防核抢险员、一般事故抢险员、消防队队员、火灾嘹望观察员(直升机)|
|军人|特种兵(海军陆站队、伞兵、水兵、爆破兵、蛙人、化学兵、负有布雷爆破任务之工兵、情报单位负有特殊任务者)、空军飞行官兵、空军海洋巡弋舰艇及潜艇官兵、前线军人、军校学生及入伍受训新兵|
|职业运动|滑雪人员、曲棍球球员、冰上曲棍球球员、橄榄球球员、摔跤运动员、职业拳击运动员、业余拳击运动员、马术运动员|
"""